﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace GraphAlgorithm
{
	/// <summary>
	/// Véletlen számokkal kapcsolatos segédfüggvények.
	/// </summary>
	internal class RandomHelper
	{
		/// <summary>
		/// Véletlen generátor.
		/// </summary>
		private static Random rnd = new Random();

		/// <summary>
		/// Súlyozott indexekből választ véletlenszerűen a súlyoknak megfelelő eloszlással.
		/// </summary>
		/// <param name="Ws">A súlyok tömbje.</param>
		/// <returns>A véletlen index.</returns>
		internal static int RandomIndex( double[] Ws )
		{
			double sum = 0;
			foreach( double w in Ws )
			{
				sum += w;
			}


			double nbr = rnd.NextDouble() * sum;

			for( int i = 0; i < Ws.Length; i++ )
			{
				if( nbr < Ws[i] )
				{
					return i;
				}
				else
				{
					nbr -= Ws[i];
				}
			}

			return -1;
		}
	}
}
